Manipulating visual representations of data

ABSTRACT

Technologies relating to manipulating visual representations of data. A method is provided that includes displaying a first visual representation including a zoom parameter having a first value; receiving a first input while maintaining a first position of a cursor relative to the first visual representation; modifying the zoom parameter to have a second value, where the first visual representation of the document is adjusted according to the second value to provide a second visual representation; identifying a change in position of the cursor to a second position relative to the second visual representation; receiving a second input to modify the zoom parameter of the second visual representation; and modifying the zoom parameter to have a third value, where the second visual representation of the document is adjusted relative to the second position of the cursor according to the third value to provide a third visual representation of the document.

BACKGROUND

The present disclosure relates to user interfaces and datavisualization.

There exists a wide variety of data, e.g., text, raster images, vectorimages, and combinations thereof, that can be displayed on variousdisplay devices. Computer applications are widely used to display andmanipulate such data. Commonly, these data can be referred to asdocuments that include content of different kinds A user of a computersystem can access content of documents that are stored locally orremotely. Computer systems generally provide a graphical user interface(GUI) that provides windows of the kind that allow applications todisplay content in a display pane. Tools that allow the user of acomputer to move comfortably through the text of an electronic documentor an image display are important and are included in various forms inGUI applications.

Viewing specific content becomes more challenging with increasingamounts of document content. For example, large text documents requirefrequent scrolling in order to move to parts of the document that arehidden from the current view. As a result, with large documents, a userhas to adjust display parameters of the document and/or the displayparameters of a corresponding application window in order to move todifferent sections of the document. This is necessary because the scaleat which a document can be displayed in the user interface in itsentirety is usually very different from the scale that facilitatesuseful interaction with the document contents. The process of movingdocument contents in an application window is typically referred to as“scrolling.” The presentation of the document may be linear, i.e., theuser accesses document contents in an essentially sequential order fromthe beginning to the end of the document. Alternatively, thepresentation of the document may also be non-linear, as for exampleoften seen with hyperlinked documents (e.g., common web pages) that linkcertain parts of the document to certain parts of the same or otherdocuments and that enable the user to quickly access and jump back andforth between certain parts of the document.

Common scrolling techniques include scrolling line by line or page bypage in a document (or at discrete intervals in documents, such asvector graphics documents, that do not feature inherent elements like aline raster or a pixel raster), for example, performed in response to akey stroke or the use of a scroll wheel of a pointing device such as amouse. Alternatively, scrolling can be performed in response to acombination of inputs, for example, clicking a button of a pointingdevice and moving the pointing device, dragging the document along.Specific user interface elements, e.g., scroll bars, can also be used toperform scrolling. A scrollbar can be used by pointing and clicking thepointing device, in connection with or without movement of the pointingdevice. In connection with scrolling content, and also known from otherGUI elements, a function commonly referred to as “autoscroll” serves toscroll the document into the direction indicated by the position of themouse cursor.

SUMMARY

This specification describes technologies relating to manipulatingvisual representations of data. In general, one aspect of the subjectmatter described in this specification can be embodied in methods thatinclude the actions of displaying a first visual representation of adocument, the first visual representation having one or morerepresentation parameters including a zoom parameter having a firstvalue; receiving a first input while maintaining a first position of acursor relative to the first visual representation; modifying the zoomparameter to have a second value in response to the first input, wherethe visual representation of the document is adjusted according to thesecond value of the zoom parameter to provide a second visualrepresentation; identifying a change in position of the cursor to asecond position relative to the second visual representation; receivinga second input to modify the zoom parameter of the second visualrepresentation; and modifying the zoom parameter to have a third value,where the second visual representation of the document is adjustedrelative to the second position of the cursor according to the thirdvalue of the zoom parameter to provide a third visual representation ofthe document. Other embodiments of this aspect include correspondingsystems, apparatus, and computer program products.

These and other embodiments can optionally include one or more of thefollowing features. The method further includes displaying a visualguide in the second visual representation, the visual guide identifyingthe first visual representation relative to the second visualrepresentation. The method further includes moving the visual guide inresponse to identifying change in position of the cursor. The methodfurther includes receiving an input to modify a size of the visual guideto provide a modified visual guide and using the modified visual guideto determine the third value of the zoom parameter.

Modifying the zoom parameter to have a second value further includesdetermining a first target zoom level for zooming out. Modifying thezoom parameter to have a third value further includes determining asecond target zoom level for zooming in. Receiving a first inputincludes receiving an input to an input device and determining whether athreshold time has elapsed without an additional input to the inputdevice. The method further includes automatically scrolling the secondvisual representation when the position of the cursor moves to specificareas or across specific areas in the user interface.

Particular embodiments of the subject matter described in thisspecification can be implemented to realize one or more of the followingadvantages. When viewing documents, users often access different partsof the document. Users can view different parts of a document in a quickand easy manner by providing a quick and intuitive way of presentingdocument contents at different levels of detail. The level of detailassociated with one specific scale (or specific scale range) allows forviewing of document contents. The level of detail associated withanother specific scale (or specific scale range) allows for presenting aquick overview and repositioning of the view of the document in order toview a different portion of the documents and the correspondingcontents. Thus, a user can quickly transition from one level of detailto the other level of detail. In particular, only simple and intuitiveuser interaction is necessary for changing between the two specific zoomranges (or scale ranges).

Furthermore, the techniques disclosed can be integrated into alreadyexisting tools. The method can be easily integrated with, for example, a“grabber hand” tool, which is a common tool used in a number ofapplications. The techniques can be integrated with other tools as well,e.g., “drag and drop” tools or “pointer” tools that are integrated in auser interface of an operating system or application. The techniques canalso be integrated into tools that operate across multiple applicationsor platforms.

The details of one or more embodiments of the invention are set forth inthe accompanying drawings and the description below. Other features,aspects, and advantages of the invention will become apparent from thedescription, the drawings, and the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1A is a screenshot showing an example user interface displaying aninitial view of a document.

FIG. 1B is a screenshot showing the example user interface displayingthe document and visual guides after zooming out.

FIG. 1C is a screenshot showing the example user interface displayingthe document and the visual guides while scrolling.

FIG. 1D is a screenshot showing the example user interface displayingthe document and visual guides after zooming in.

FIG. 2 is a flow chart showing an example process for performing zoomingand scrolling.

FIG. 3 is a flow chart showing an example process for determining anoperating mode.

FIG. 4 is a flow chart showing an example process for determining a zoomfactor.

FIG. 5 is a flow chart showing an example process for performingzooming.

FIG. 6 is a schematic diagram of a generic computer system.

Like reference numbers and designations in the various drawings indicatelike elements.

DETAILED DESCRIPTION

FIG. 1A is a screenshot 101 showing an example user interface displayingan initial view of a document 130 within an application window 100. Thedisplay also shows a cursor 110 (e.g., corresponding to input receivedfrom a mouse or other input device). In particular, the cursor 110 isshown having a form of a hand-shaped icon indicating a specificoperating mode (e.g., a “grabber hand”). The application window 100 caninclude a number of elements, e.g., a title bar, menus, and toolbarsincluding one or more control buttons. The operating mode as well as theparticular menus and toolbar elements can vary depending on theparticular application presented in application window 100.

The contents of the document 130 (e.g., document text 140 and documentimages 150) are only partially displayed due to a size of the document130 and a scale at which the document is displayed. The particular scalecan be selected in order to provide a particular level of magnificationto the user in order to perform one or more operations relative to thedocument 130. In particular, the document 130 is shown at a scalerepresenting a zoomed-in level such that text and other contents of thedocument 130 are displayed at a high level of detail (e.g., the documenttext 140 and images 150 are clear). For example, FIG. 1A illustrates thedocument 130 at a scale 105 having a zoom value of 300%, whichrepresents a scaling factor of three over a defined size of the documentcontents (e.g., points or pica for textual content, or centimeters,inches for other content). However, a small portion of the document 130is visible in the application window 100.

FIG. 1B is a screenshot 102 showing the example user interfacedisplaying the document 130 within the application window 100 afterzooming out. Additionally, visual guides 120 are displayed within theapplication window 100. The visual guides 120 provide a frame thatindicates the size and location of the previously displayed portion ofthe document 130 (e.g., the region bounded by the visual guides 120represents the portion of the document displayed in the user interfacewhen scaled to the level shown in FIG. 1A). One or more properties(e.g., form, shape, size, color, line style or weight, fill, andopacity) of the visual guides 120 can be adjustable. In some alternativeimplementations, visual guides are not displayed.

FIG. 1B illustrates a visual representation displaying a greater portionof the document 130 relative to the portion of the document 130displayed in FIG. 1A according to their relative scales. In particular,FIG. 1B illustrates the document 130 at a scale 105 having a zoom valueof substantially 50% representing a zoomed-out level at a scaling factorof 0.5 over a defined size of the document contents. In particular, thescale illustrated in FIG. 1B facilitates the display of a larger portionof the document 130 at a reduced level of detail—e.g., the document text140 as shown in FIG. 1B is not rendered in enough detail due to thescaling, for a user to read the document text 140 However, FIG. 1B alsoillustrates an increased overall view of the document 130 and itscontents, e.g., document text 140 and document images 150.

FIG. 1C is a screenshot 103 showing the example user interfacedisplaying the document 130 and visual guides 120 within the applicationwindow 100 after moving the visual guides 120. The visual guides 120have been moved, e.g., using the cursor 110, to a different locationwithin the document 130. In relation to a center portion of two overleafpages 134 shown in FIG. 1B, the visual guides 120 have been moved to theprevious overleaf pages 132. The visual guides 120 indicate the portionof the document 130 that will be displayed after changing the scale to azooming in level again. The greater portion of the document 130presented by scaling to a zoomed out level enables the user to positionthe cursor 110 (and, therefore, the visual guides) to another locationwithin the document 130. The user can position the visual guides 120 toany location within the document 130. Additionally, the visual guides120 can be positioned at locations within the document 130 that are notshown (referred to as hidden portions of the document) within thedisplayed portion of the document 130. Positioning the visual guides tohidden areas is described below in FIG. 2.

FIG. 1D is a screenshot 104 showing the example user interfacedisplaying the document 130 within the application window 100 afterzooming in at the location within the document 130 identified by thevisual guides 120 in FIG. 1C. In FIG. 1D, similar to FIG. 1A, thedocument 130 is, once again, shown at a scale representing a zoomed-inlevel such that text and other contents of the document 130 aredisplayed at a high level of detail (e.g., the document text 140 andimages 150 are clear). The portion of the document 130 on display withinthe display pane 170 corresponds to the area indicated by the visualguides 120 in FIG. 1C before zooming in. In some implementations, atarget zoom level, i.e., the size of the portion of the document to bedisplayed after zooming in, is adjusted according to additional input,for example, as described below in FIG. 2.

FIG. 2 shows a flow chart of an example process 200 for manipulating avisual representation of a document. For convenience, the process 200will be described with respect to a system that performs the process200.

The system displays 210 document data. The document can be, for example,portable document format (PDF) files, word processor files, spread sheetfiles, raster image files, vector image files, and files including acombination of different data. An example document 130 containingdocument text 140 and document images 150 is shown in FIGS. 1A to 1D.For convenience, a document as used in this specification refers to anydisplayed data including not only documents such as word processingdocuments but also includes visual representations of data such asvisual representation of audio data (e.g., an audio waveform) and videodata (e.g., as represented by a series of discrete screenshots).

The document can be displayed as part of a particular application (e.g.,a word processing application, a desktop publishing application, or aweb authoring application). The display of the document includes avisual representation of some or all of the document contents. Thecontents can include, for example, text and images. Displaying thedocument includes providing the visual representation of the documentcontents at a specified scale (e.g., a zoom level). The scale leveldetermines an amount of the document that is displayed in the visualrepresentation. For example, a scale representing a zoomed-in level canpresent a smaller portion of the document within the visualrepresentation while a scale representing a zoomed-out level that canpresent a larger portion of the document within the visualrepresentation.

The value of the scaling can be specified, e.g., as a relation in sizebetween document contents as represented on a display and the samedocument contents as represented on a printout. For example, in a wordprocessing application, a scale of 100% (or 1:1) indicates that documentcontents are displayed at the same scale as a defined size of thedocument contents (e.g., points, pica, inches, centimeters). A scalegreater than 1.0 or 100% (e.g., 200% or 2:1) indicates magnification,i.e., zooming in. Similarly, a scale less than 1.0 or 100% (e.g., 50% or1:2) indicates reduction, i.e., zooming out. Different scale amounts canallow a user to perform different document manipulations while reducingthe efficiency or ability to perform other operations. For example,larger scales can allow a user to read and edit document contents whilelimiting the user's ability to navigate (scroll) to different portionsof the document. Similarly, smaller scales facilitate navigation betweendifferent portions of a document while making editing or reading ofdocument content difficult or impossible.

The system receives 230 an input from an input device (e.g., a mouse orother input device for manipulating the cursor position) associated withchanging the scale of the presented document. For example, the user caninitiate a change in scale by clicking and holding a left mouse buttonin a particular operating mode (e.g., in the mode “grabber hand”)without changing the position of the cursor (e.g., without moving themouse).

The system determines 230 whether an additional input is received tomove the cursor within a specified time period. The time period isspecified such that the system determines whether the input is to changethe operating mode or to manipulate the document in the currentoperating mode (e.g., to use the grabber hand to modify the position ofthe displayed portion of the document 130).

In some implementations, the specified time is substantially 0.5 secondsor one second. Furthermore, the specified time can be adjusted by theuser to accommodate for shorter or longer time periods. Additionally,the user can toggle the method on and off depending, e.g., on a specificworkflow.

If the system receives an input to move the cursor within the specifiedtime period, the system does not change to current operating mode, butinstead provides 220 the functionality associated with the currentoperating more (e.g., to use the grabber hand to modify the position ofthe displayed portion of the document 130). If the system does notreceive an input within the specified time period (e.g., a timer expireswithout a movement input), the cursor (e.g., cursor 110) is altered toindicate a changed operating mode (e.g., “zooming grabber hand” mode).

When the operating mode is changed, the system determines 235 a zoomfactor and automatically adjusts 240 the view of the document tocorrespond to the determined zoom level so as to encompass a largerportion of the document. Additionally, the system optionally displays245 visual guides (e.g., visual guides 120 of FIG. 1B). In someimplementations, the mouse cursor 110 is not altered when the operatingmode is changed. When the system receives 250 an input indicating achange back to the previous (or another) operating mode, the previous(or another) zoom level is restored 260 and the visual guides (e.g.visual guides 120) are no longer displayed 265. The system thencontinues displaying 210 document data. FIGS. 1A and 1B illustrate anexample of transitioning from a first zoom level to a second zoom level.

As shown in FIGS. 1A and 1B document 130 is modified from a first zoomlevel as shown in FIG. 1A to a second zoom level as shown in FIG. 1B inresponse to a user input to change operating mode. At the zoom levelillustrated in FIG. 1B, a greater portion of the document 130 is visiblewithin the user interface. The visual guides 120 are presented toillustrate the region of the document 130 visible at the zoom levelshown in FIG. 1A. The user can use the zoomed out view level of thedocument 130 to identify other portions of the document 130.

As shown in FIG. 2, the system determines 270 whether a received input(e.g., a user input with the mouse) indicating cursor movement near orbeyond a boundary of the display pane 170. When the cursor movement isnot beyond the boundary, the system moves 290 the visual guides inresponse 275 to the received input to a corresponding location withinthe document. The visual guides are positioned relative to the locationof the mouse cursor 110. The cursor can be positioned, e.g., at thecenter of the visual guides. For example, the location of the visualguides can correspond to the movement of the cursor in response to userinput (e.g., to the user's mouse device). In some implementations,system displays the visual guides continuously indicating the positionand the size of the portion of the document that will be displayed whenthe previous zoom level is restored. An example of moving the visualguides is shown in FIGS. 1B and 1C.

As shown in FIGS. 1B and 1C, the visual guides 120 are moved from afirst position relative to the document 130 to a second positionrelative to the document 130. In the example depicted in FIG. 1C, thevisual guides 120 were moved from the previously displayed portion oftwo overleaf pages 134 shown in FIG. 1B to a lower part of the previoustwo overleaf pages 132. The visual guides 120 indicate the position andthe size of the portion of the document 130 that will be displayed inthe display pane 170 when the previous zoom level is restored. While avertical movement of the visual guides 120 is shown, movement can be inother directions relative to the document 130.

In some implementations, the user can move the visual guides 120 to alocation at an edge of the displayed portion of the document in thedisplay pane 170. The system can automatically scroll the document 130in order to display additional portions of the document 130. Thisautomatic scrolling is described in greater detail below.

As shown in FIG. 2, the system receives 250 an input (e.g., from theuser) indicating a change to a different operating mode. For example,the user can release a button (e.g., on the mouse or a pressed key). Thesystem, in response to the received input, changes 260 the zoom level(e.g., zooms in on the document) and hides 265 the visual guides,resulting in a display 210 of the document. Additionally, the previousoperating mode can be restored (e.g., “grabber hand” mode). The user canagain indicate a change in operation mode to modify the zoom level ofthe displayed document as described above.

As shown in FIG. 1D, the document 130 is shown at the same zoom level asin FIG. 1A. For example, the user can indicate a change in the operatingmode from that shown in FIG. 1C. However, the portion of the document130 shown in the display pane 170 is different. Specifically, theportion of the document 130 shown in the display pane 170 in FIG. 1Dcorresponds to the region of the document 130 identified by the positionof the visual guides 120 in FIG. 1C. As shown in FIG. 2, when the systemdetermines 270 that the received input is near or beyond a boundary ofthe displayed document, the system autoscrolls 280 the documentcontents.

For example, if the portion of the document that the user is scrollingto is not visible in the display pane of the application window at thecurrent zoom level, autoscroll can be performed by the system. If thesystem receives user input indicating movement of the mouse cursortowards and/or over a boundary of the display pane in direction of theportion of the document to be displayed, autoscroll is performed. Thesystem then performs autoscroll, unless an end of the document isreached, or unless the user performs a movement of the mouse cursor awayfrom the boundary towards the display pane.

In some implementations, the system accepts other input (e.g.,keystrokes) that indicates that scrolling of the document is intended ornecessary. The autoscroll function, as known from other GUI elements,serves to scroll the view of the document into the direction indicatedby the position of the mouse cursor. For example, as shown in FIG. 1B,the display pane 170 include a boundary 160. If a user moves the cursor,and therefore the visual guides, within a specified distance of theboundary 160, the autoscroll operation can be triggered. As a result,the underlying content of document 130 can scroll to modify the portionof the document 130 displayed in the display pane 170.

Sometimes, the direction of scrolling is perceived ambiguously. Whilethe direction of scrolling is sometimes referred to as a document beingscrolled into a desired direction, rather the view is scrolled into thedesired direction and the document is actually scrolled into theopposite direction. The desired result is the view of the document beingrepositioned over another part of the document, and the result is thesame regardless of the varied language used in describing the process.

In some implementations, while autoscroll is performed, the scrolling isperformed with increasing speed according to a measure of time. Theincrease in speed facilitates quick scrolling to remote portions oflarge documents without the use of alternate modes of performingscrolling.

Adjusting the Visual Guides

In some implementations, the visual guides, are adjusted in response toa received input, e.g., a user input performed using the scroll wheel ofthe mouse or specific keys on a keyboard. For example, the visual guidescan be increased or decreased in size or shape. As a consequence of themodified visual guides, the user adjusts the zoom level that waspreviously used before zooming out (i.e., the zoomed-in level) andbefore the system displayed the visual guides. Thus, the user can adjustnot only the position of the portion of the document to be displayedafter scrolling, but also the zoom level of the portion of the document.

This is particularly useful if the size of the previously displayedportion is smaller or larger than the portion of the document the userwants to scroll to. Thus, for example, a specific paragraph of text or aspecific image in the document can be displayed at a corresponding zoomlevel before the zoom level is restored. Scrolling and adjusting thezoom level can be performed in one operation, e.g., by moving the mouseand activating the scroll wheel.

Determining an Operating Mode

FIG. 3 is a flow chart showing an example process 300 for determining anoperating mode. For example, the system can determine whether toactivate a “zooming grabber hand” mode. For convenience, the process 300will be described with respect to a system that performs the process300.

While displaying 310 the document, before the system can zoom outaccording to a “zooming grabber hand” mode (e.g., steps 235, 240 in theprocess 200 of FIG. 2), the system determines the operating mode, e.g.“grabber hand” mode or “zooming grabber hand” mode. After the systemreceives 320 a corresponding user input (e.g., a mouse input), thesystem optionally adjusts 330 one or more rendering parameters forfaster rendering. Documents can be, for example, large and complex(e.g., feature different kinds of content and hundreds or thousands ofcontent items). Therefore, the system can render many different contentitems. In some implementations, rendering parameters are adjusted tofacilitate sufficiently fast and smooth zooming. In someimplementations, other methods for achieving a similar result are used,for example, the system can pre-render a representation of a target zoomlevel as a large bitmap and transfer the bitmap block by block to screenmemory, e.g., by blitting.

The system initializes 340 a timer with a specified value (e.g., 0.5seconds) and starts the timer. The timer can be implemented as acountdown timer, i.e., the time value is decremented from the initialvalue. However, the timer can be implemented in a number of other waysto achieve the same behavior. As long as the timer has not expired, thesystem tracks 350 user input (e.g., cumulative mouse movement). If thesystem detects 354 a specified amount of movement (e.g., greater thanthree pixels), the system stops 360 the timer and sets 370 the operatingmode (e.g., to “grabber hand” mode). Consequently, no zooming out isperformed but regular operation of the previous (and current) mode isperformed. In the case of the mode being “grabber hand” mode, scrolling(or panning) of the document is performed as commonly known.

If the system receives no suitable user input 256 (e.g., no movement ofthe mouse or mouse movement within a specified threshold, for example,less than three pixels) while the timer is running (e.g., the timer isbeing decremented) and the timer expires 380 (e.g., the timer reacheszero), the system sets 390 the mode (e.g., to “zooming grabber hand”mode). Then, zooming out is performed as shown in FIG. 2 above.

Determining a Zoom Factor

FIG. 4 shows an example process 400 for determining a zoom factor. Forconvenience, the process 400 will be described with respect to a systemthat performs the process 400.

Before zooming out, the system determines a zoom factor for thedocument. The system determines 410 a current zoom level (e.g., the zoomlevel 105 of 300% as illustrated in FIG. 1A). The system determines 415bounds of the document (e.g., the number of pages, page size andlayout). In some implementations, the bounds of a document aredetermined according to all (visible and hidden) spreads of thedocument. A spread is a part of a document denoting the portion definedby one or more facing pages (e.g., the spreads of a magazine can usuallyinclude two facing pages; however, in some cases, a spread can haveadditional pages, for example, a foldout spread can include three ormore pages). In some implementations, the bounds of the document aredetermined according to the width and the height of a pasteboard. Thepasteboard includes, for example, one or more pages in a spread or oneor more spreads and a surrounding space or work area (e.g., as shown bythe spreads and background portion in FIG. 1B).

The system determines 420 whether the zoom factor can be determinedaccording to a width of the document. A width of the document can be,for example, the width of a page, the width of a spread, or the width ofa pasteboard. In some implementations, the width and height of thepasteboard is determined according to the width and height of allpasteboards (e.g., when each page has it own pasteboard), for example,by determining a rectangle that includes all pasteboards. In someimplementations, the width and height are determined according to userinput or user preferences. If the zoom factor cannot be determinedaccording to the width of the document, then the system determines 440whether the zoom factor can be determined according to document height.If the system determines 440 that the zoom factor can be determinedaccording to the height of the document, the system determines 450 thezoom factor according to document height. If the zoom factor cannot bedetermined according to the height of the document, then the systemdetermines 460 the zoom factor according to a default factor.

If the system determines 420 that the zoom factor can be calculatedaccording to the width of the pasteboard, the system determines 430 thezoom factor according to the width of the pasteboard. In someimplementations, the zoom factor is determined according to the width ofthe pasteboard as follows:

A zoom to the pasteboard width z_(pasteboard), according to a viewwindow width w_(view window), a pasteboard width w_(pasteboard) and anoriginal zoom z_(original), is determined using the following formula,where a specific minimum zoom value is used as a limit:

$z_{pasteboard} = {\left( \frac{w_{{view}\mspace{14mu}{window}}}{w_{pasteboard}} \right){z_{original}.}}$

Additionally, a fixed zoom z_(fixed) is determined according to amaximum zoom z_(max) and the original zoom z_(original), using thefollowing formula:z _(fixed)=(z _(max))(z _(original)).

Then, an ideal zoom z_(ideal) is determined according to the maximum ofthe zoom to the pasteboard width z_(pasteboard) and the fixed zoomz_(fixed):z _(ideal)=max(z _(pasteboard) , z _(fixed)).

Whether zooming according to the determined zoom factor z_(ideal) ispossible, is determined according to a maximum width zoom ratio r_(mw),using to the following formula:

$\left( \frac{z_{ideal}}{z_{original}} \right) < {r_{mw}.}$

In some implementations, the maximum width zoom ratio r_(mw) issubstantially 0.7. This ratio can be used, e.g., to ensure that zoomingis performed within specified limits.

If zooming based on the determined zoom factor z_(ideal) is notpossible, a zoom factor z_(height) based on the height of the pasteboardis determined.

In some implementations, the system determines the zoom factorz_(height) according to the height of the pasteboard, i.e. the constantheight zoom ratio r_(ch), and the original zoom z_(original), using tothe following formula:z _(height)=(z _(original))(r _(ch)).

In some implementations, the constant height zoom ratio r_(ch) issubstantially 0.4.

If zooming based on the determined zoom factor z_(height) is notpossible, the system determines a default zoom factor according to adefault small scale factor.

In some implementations, the system determines the default zoom factorz_(default), according to the original zoom z_(original) and the defaultsmall scale factor s_(s), using to the following formula:

$z_{default} = {\left( \frac{z_{original}}{S_{S}} \right).}$

In some implementations, the default small scale factor s_(s) issubstantially 1.0. The default small scale factor s_(s) can be, forexample, 1.02, selected such that the visual guides just fit within thebounds of the zoomed-out display pane.

In some implementations, the user specifies one or more of the factors,constants, and ratios in order to accommodate specific zoomingoperations or requirements.

Zooming In and Zooming Out

FIG. 5 shows an example process 500 for performing zooming. Forconvenience, the process 500 will be described with respect to a systemthat performs the process 500.

Zooming is performed, (e.g., in steps 240 and 265 of FIG. 2). As shownin FIG. 5, the system creates 510 the necessary structures fordisplaying the visual guides (e.g., a red rectangle sprite andassociated data). The system estimates 515 a time value and initiates520 a timer. The system determines 530 a first zoom target (i.e., zoomtarget level). When zooming in, the system determines 540 whether thezoom target is smaller than or equal to the final zoom target (i.e., thefinal zoom level) or whether the zoom target is the first zoom targetthat has been determined. If the zoom target is smaller than or equal tothe final zoom target or if the zoom target is the first zoom target,the system adjusts 550 the current zoom to the determined zoom target.

Similarly, when zooming out, the system determines 540 whether the zoomtarget is greater than or equal to the final zoom target or whether thezoom target is the first zoom target that has been determined. If thezoom target is greater than or equal to the final zoom target or if thezoom target is the first zoom target, the system adjusts 550 the currentzoom to the determined zoom target.

The system adjusts 560 the visual guides to the determined zoom target.The system stores 570 a time taken to zoom to the current zoom targetaccording to a time difference determined based on the estimated time515 and a measure of time that has expired since the timer was started520. The next zoom target is determined by the system according to thetime taken for the previous zoom 570 and the final zoom target. In someimplementations, the zoom targets are determined by the system accordingto a function that maps time values to zoom values, whereas the mappingis a linear mapping. Other mapping functions can be used, e.g.,including exponential or logarithmic functions.

FIG. 6 is a schematic diagram of a generic computer system 600. Thesystem 600 can be used for practicing operations described inassociation with, for example, the methods 200, 300, 400, and 500. Thesystem 600 can include a processor 610, a memory 620, a storage device630, and input/output devices 640. Each of the components 610, 620, 630,and 640 are interconnected using a system bus 650. The processor 610 iscapable of processing instructions for execution within the system 600.In one implementation, the processor 610 is a single-threaded processor.In another implementation, the processor 610 is a multi threadedprocessor. The processor 610 is capable of processing instructionsstored in the memory 620 or on the storage device 630 to displaygraphical information for a user interface on the input/output device640.

The memory 620 is a computer readable medium such as volatile or nonvolatile that stores information within the system 600. The memory 620can store data structures, for example. The storage device 630 iscapable of providing persistent storage for the system 600. The storagedevice 630 may be a floppy disk device, a hard disk device, an opticaldisk device, or a tape device, or other suitable persistent storagemeans. The input/output device 640 provides input/output operations forthe system 600. In one implementation, the input/output device 640includes a keyboard and/or pointing device. In another implementation,the input/output device 640 includes a display unit for displayinggraphical user interfaces.

An electronic document (which for brevity will simply be referred to asa document) does not necessarily correspond to a file. A document may bestored in a portion of a file that holds other documents, in a singlefile dedicated to the document in question, or in multiple coordinatedfiles.

Embodiments of the subject matter and the functional operationsdescribed in this specification can be implemented in digital electroniccircuitry, or in computer software, firmware, or hardware, including thestructures disclosed in this specification and their structuralequivalents, or in combinations of one or more of them. Embodiments ofthe subject matter described in this specification can be implemented asone or more computer program products, i.e., one or more modules ofcomputer program instructions encoded on a computer-readable medium forexecution by, or to control the operation of, data processing apparatus.The computer-readable medium can be a machine-readable storage device, amachine-readable storage substrate, a memory device, a composition ofmatter effecting a machine-readable propagated signal, or a combinationof one or more of them. The term “data processing apparatus” encompassesall apparatus, devices, and machines for processing data, including byway of example a programmable processor, a computer, or multipleprocessors or computers. The apparatus can include, in addition tohardware, code that creates an execution environment for the computerprogram in question, e.g., code that constitutes processor firmware, aprotocol stack, a database management system, an operating system, or acombination of one or more of them. A propagated signal is anartificially generated signal, e.g., a machine-generated electrical,optical, or electromagnetic signal, that is generated to encodeinformation for transmission to suitable receiver apparatus.

A computer program (also known as a program, software, softwareapplication, script, or code) can be written in any form of programminglanguage, including compiled or interpreted languages, and it can bedeployed in any form, including as a stand-alone program or as a module,component, subroutine, or other unit suitable for use in a computingenvironment. A computer program does not necessarily correspond to afile in a file system. A program can be stored in a portion of a filethat holds other programs or data (e.g., one or more scripts stored in amarkup language document), in a single file dedicated to the program inquestion, or in multiple coordinated files (e.g., files that store oneor more modules, sub-programs, or portions of code). A computer programcan be deployed to be executed on one computer or on multiple computersthat are located at one site or distributed across multiple sites andinterconnected by a communication network.

The processes and logic flows described in this specification can beperformed by one or more programmable processors executing one or morecomputer programs to perform functions by operating on input data andgenerating output. The processes and logic flows can also be performedby, and apparatus can also be implemented as, special purpose logiccircuitry, e.g., an FPGA (field programmable gate array) or an ASIC(application-specific integrated circuit).

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital computer. Generally, aprocessor will receive instructions and data from a read-only memory ora random access memory or both. The essential elements of a computer area processor for performing instructions and one or more memory devicesfor storing instructions and data. Generally, a computer will alsoinclude, or be operatively coupled to receive data from or transfer datato, or both, one or more mass storage devices for storing data, e.g.,magnetic, magneto-optical disks, or optical disks. However, a computerneed not have such devices. Moreover, a computer can be embedded inanother device, e.g., a mobile telephone, a personal digital assistant(PDA), a mobile audio player, a Global Positioning System (GPS)receiver, to name just a few. Computer-readable media suitable forstoring computer program instructions and data include all forms ofnon-volatile memory, media and memory devices, including by way ofexample semiconductor memory devices, e.g., EPROM, EEPROM, and flashmemory devices; magnetic disks, e.g., internal hard disks or removabledisks; magneto-optical disks; and CD-ROM and DVD-ROM disks. Theprocessor and the memory can be supplemented by, or incorporated in,special purpose logic circuitry.

To provide for interaction with a user, embodiments of the subjectmatter described in this specification can be implemented on a computerhaving a display device, e.g., a CRT (cathode ray tube) or LCD (liquidcrystal display) monitor, for displaying information to the user and akeyboard and a pointing device, e.g., a mouse or a trackball, by whichthe user can provide input to the computer. Other kinds of devices canbe used to provide for interaction with a user as well; for example,feedback provided to the user can be any form of sensory feedback, e.g.,visual feedback, auditory feedback, or tactile feedback; and input fromthe user can be received in any form, including acoustic, speech, ortactile input.

Embodiments of the subject matter described in this specification can beimplemented in a computing system that includes a back-end component,e.g., as a data server, or that includes a middleware component, e.g.,an application server, or that includes a front-end component, e.g., aclient computer having a graphical user interface or a Web browserthrough which a user can interact with an implementation of the subjectmatter described is this specification, or any combination of one ormore such back-end, middleware, or front-end components. The componentsof the system can be interconnected by any form or medium of digitaldata communication, e.g., a communication network. Examples ofcommunication networks include a local area network (“LAN”) and a widearea network (“WAN”), e.g., the Internet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

While this specification contains many specifics, these should not beconstrued as limitations on the scope of the invention or of what may beclaimed, but rather as descriptions of features specific to particularembodiments of the invention. Certain features that are described inthis specification in the context of separate embodiments can also beimplemented in combination in a single embodiment. Conversely, variousfeatures that are described in the context of a single embodiment canalso be implemented in multiple embodiments separately or in anysuitable subcombination. Moreover, although features may be describedabove as acting in certain combinations and even initially claimed assuch, one or more features from a claimed combination can in some casesbe excised from the combination, and the claimed combination may bedirected to a subcombination or variation of a subcombination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation of various systemcomponents in the embodiments described above should not be understoodas requiring such separation in all embodiments, and it should beunderstood that the described program components and systems cangenerally be integrated together in a single software product orpackaged into multiple software products.

Thus, particular embodiments of the invention have been described. Otherembodiments are within the scope of the following claims. For example,the actions recited in the claims can be performed in a different orderand still achieve desirable results.

What is claimed is:
 1. A computer-implemented method comprising:displaying, in a first operating mode, an initial view of a firstportion of a document in an application window; in response to an inputnot being received within a predetermined time period, entering a secondoperating mode to display a first zoomed-out view of the document in theapplication window, wherein entering the second operating mode comprisesdisplaying a visual guide to indicate the first portion of the documentin the first zoomed-out view, the visual guide comprising a frame thatindicates a size and location of the first portion of the documentrelative to the first zoomed-out view; and causing a second portion ofthe document that is not displayed in the first zoomed-out view to bedisplayed in the visual guide in response to an auto scroll operationtriggered by the visual guide being placed to a boundary of a displaypane of the application window.
 2. The computer-implemented method ofclaim 1, further comprising: displaying a zoomed-in view of the secondportion of the document identified by the visual guide in the zoomed-outview in response to a request to zoom in the second portion of thedocument; wherein the initial view and the zoomed-in view are associatedwith two different zoom levels.
 3. The computer-implemented method ofclaim 2, wherein the request to zoom in the second portion of thedocument comprises modifying a size of the visual guide; wherein thezoomed-in view displays the second portion identified by the modifiedvisual guide, and a size of the second portion is modified according tothe size of the visual guide.
 4. The computer-implemented method ofclaim 2, wherein a level of magnification of at least one of the initialview, the zoomed-out view, or the zoomed-in view is specified by a user.5. The computer-implemented method of claim 1, further comprising:identifying a change in position of a cursor in the application window;and placing the visual guide to the location in relation to the changein position of the cursor.
 6. The computer-implemented method of claim1, wherein one or more properties of the visual guide are adjustable. 7.The computer-implemented method of claim 6, wherein the one or moreproperties of the visual guide comprises at least one of form, shape,size, color, line style, line weight, fill, or opacity.
 8. Thecomputer-implemented method of claim 1, further comprising: changing asize of the visual guide.
 9. The computer-implemented method of claim 1,wherein the document is one of a portable document format (PDF) file,word processor file, spreadsheet file, raster image file, vector imagefile, or file including a combination of different data.
 10. Thecomputer-implemented method of claim 1, wherein a zoom level of thefirst zoomed-out view of the document is determined based on at leastone measurement of bounds of the document.
 11. The computer-implementedmethod of claim 1, wherein a zoom level of the first zoomed-out view thedocument is determined based on a width of the document.
 12. A computerprogram product, encoded on a non- transitory computer-readable storagedevice, operable to cause data processing apparatus to performoperations comprising: causing display, in a first operating mode, aninitial view of a first portion of a document in an application window;determining whether there is an input to an input device within athreshold time; in response to the threshold time being elapsed withoutreceiving the input to the input device, entering a second operatingmode, wherein the entering the second operating mode comprises causingdisplay of a visual guide and a zoomed-out view of the document, whereinthe visual guide comprising comprises a frame that indicates a size andlocation of the first portion of the document relative to the zoomed-outview; causing a second portion of the document that is not beingdisplayed in the zoomed-out view to be displayed in the visual guide inresponse to an auto scroll operation triggered by the visual guide beingplaced within a predetermined distance to an edge of the zoomed-outview.
 13. The computer program product of claim 12, further operable toperform operations comprising: modifying a size of the visual guide; andcausing display of a zoomed-in view of the second portion of thedocument in response to a request to zoom in the document, wherein thezoomed-in view displays the second portion identified by the modifiedvisual guide.
 14. The computer program product of claim 13, furtheroperable to perform operations comprising: in response to receivinganother input to the input device within another threshold time,preventing the document from being zoomed-out in the application window.15. The computer program product of claim 13, wherein the initial viewand the zoomed-in view are in different zoom levels.
 16. A systemcomprising: a processor and a memory operable to perform operationscomprising: in a first operating mode, presenting, in a user interface,an initial view of a first portion of a document; in response to aninput not being received within a predetermined time period, entering asecond operating mode to update the user interface with a zoomed-outview of the document; rendering a visual guide on the user interface toencompass the first portion of the document in the zoomed-out view;moving, in the user interface, the visual guide to a second portion ofthe document in response to a change in position of a cursor in the userinterface; and in response to a request to zoom in the second portion ofthe document causing display of a zoomed-in view of the second portionof the document identified by the visual guide in the zoomed-out view,wherein the request to zoom in the second portion of the documentcomprises modifying a size of the visual guide, wherein the zoomed-inview displays the second portion identified by the modified visualguide.
 17. The system of claim 16, wherein the initial view and thezoomed-in view are in different zoom levels.